Code
start_time <- Sys.time()start_time <- Sys.time()Systematic Literature Review
Keywords used: "Portfolio Multiobjective" (vice-versa),
An small abstract
Keywords searched \(\Rightarrow\) "Multiobjective Portfolio", "Portfolio Multiobjective", "Portfolio Selection Multiobjective", "Multi period portfolio multiobjective"
Max results searched \(\Rightarrow\) 1000 (to be reduced, obviously)
published.print \(\Rightarrow\) >= year 2020
is.referenced.by.count \(\Rightarrow\) is.referenced.by.count ordered by most for the minimum
score \(\Rightarrow\) In descendant order
library(dplyr)
library(rcrossref)
library(fpp3)
library(tidyr)
library(purrr)
library(scholar)
library(ggplot2)
library(plotly)
library(tidyverse)# Realizar a busca por artigos contendo a palavra-chave "Multiobjective Portfolio"
results <- cr_works(query = "Multiobjective Portfolio", limit = 1000)$data # Max is 1000 searches
cat("Show all features avaiable in selected keywords... \n")Show all features avaiable in selected keywords...
# Exibir os resultados da busca
glimpse(results)Rows: 1,000
Columns: 38
$ created <chr> "2014-01-13", "2014-09-29", "2021-08-31", "2005…
$ deposited <chr> "2014-01-27", "2021-12-23", "2021-08-31", "2017…
$ doi <chr> "10.12681/eadd/28430", "10.1109/cec.2014.690047…
$ indexed <chr> "2022-04-01", "2023-01-28", "2022-04-01", "2023…
$ member <chr> "4964", "263", "4964", "263", "263", "78", "263…
$ prefix <chr> "10.12681", "10.1109", "10.12681", "10.1109", "…
$ publisher <chr> "National Documentation Centre (EKT)", "IEEE", …
$ score <chr> "24.6353", "22.95399", "22.74101", "21.503292",…
$ source <chr> "Crossref", "Crossref", "Crossref", "Crossref",…
$ reference.count <chr> "0", "23", "0", "12", "26", "20", "17", "9", "2…
$ references.count <chr> "0", "23", "0", "12", "26", "20", "17", "9", "2…
$ is.referenced.by.count <chr> "0", "8", "0", "28", "1", "0", "8", "1", "27", …
$ title <chr> "Financial portfolio optimization using multiob…
$ type <chr> "dissertation", "proceedings-article", "dissert…
$ url <chr> "http://dx.doi.org/10.12681/eadd/28430", "http:…
$ author <list> [<tbl_df[1 x 3]>], [<tbl_df[2 x 3]>], [<tbl_df…
$ container.title <chr> NA, "2014 IEEE Congress on Evolutionary Computa…
$ published.print <chr> NA, "2014-07", NA, NA, NA, NA, "2007-09", "1989…
$ issued <chr> NA, "2014-07", NA, NA, NA, "2022", "2007-09", "…
$ link <list> <NULL>, [<tbl_df[1 x 4]>], <NULL>, [<tbl_df[1 …
$ reference <list> <NULL>, [<tbl_df[23 x 9]>], <NULL>, [<tbl_df[1…
$ abstract <chr> NA, NA, "<jats:p>Multiobjective optimization (M…
$ issn <chr> NA, NA, NA, NA, NA, "1556-5068", NA, NA, NA, NA…
$ subject <chr> NA, NA, NA, NA, NA, "General Earth and Planetar…
$ language <chr> NA, NA, NA, NA, NA, "en", NA, NA, NA, NA, NA, N…
$ short.container.title <chr> NA, NA, NA, NA, NA, "SSRN Journal", NA, NA, NA,…
$ page <chr> NA, NA, NA, NA, NA, NA, NA, "1359-1381", NA, NA…
$ license <list> <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>…
$ alternative.id <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "S0…
$ published.online <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "20…
$ volume <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "43…
$ issue <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ funder <list> <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>…
$ update.policy <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ assertion <list> <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>…
$ archive <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ isbn <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ subtitle <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
Now showing only selected columns for the table (dataframe) necessary:
results <- results |>
mutate(author_expand = map(author, ~as.character(.x))) |>
unnest(author_expand) |>
mutate(author_expand = gsub("c\\(\"|\"\\)", "", author_expand))
results <- results |>
mutate(link_expand = map(link, ~as.character(.x))) |>
unnest(link_expand)results <- results |>
select(
title,
author,
type,
url,
container.title,
short.container.title,
publisher,
doi,
published.print,
score,
reference.count,
is.referenced.by.count,
link,
reference,
abstract,
issn
) |>
mutate(
score = as.numeric(score),
published.print = coalesce(published.print, "1900-01"), # substitui NAs por "1900-01"
published.print = yearmonth( published.print )
) |>
filter(
year(published.print) >= 2020
) |>
distinct()Showing the results in a table:
Multiobjective_Portfolio <- results |>
arrange( desc(score), desc(is.referenced.by.count) ) |>
distinct() |>
filter(title != "Front Matter",
title != "Cover",
title != "Books Received")
Multiobjective_Portfolio# Realizar a busca por artigos contendo a palavra-chave "Multiobjective Portfolio"
results <- cr_works(query = "Portfolio Selection Multiobjective", limit = 1000)$data # Max is 1000 searchesNow showing only selected columns for the table (dataframe) necessary:
results <- results |>
mutate(author_expand = map(author, ~as.character(.x))) |>
unnest(author_expand) |>
mutate(author_expand = gsub("c\\(\"|\"\\)", "", author_expand))
results <- results |>
mutate(link_expand = map(link, ~as.character(.x))) |>
unnest(link_expand)results <- results |>
select(
title,
author,
type,
url,
container.title,
short.container.title,
publisher,
doi,
published.print,
score,
reference.count,
is.referenced.by.count,
link,
reference,
abstract,
issn
) |>
mutate(
score = as.numeric(score),
published.print = coalesce(published.print, "1900-01"), # substitui NAs por "1900-01"
published.print = yearmonth( published.print )
) |>
filter(
year(published.print) >= 2020
) |>
distinct()Showing the results in a table:
Portfolio_Selection_Multiobjective <- results |> arrange( desc(score), desc(is.referenced.by.count) ) |> distinct()
Portfolio_Selection_Multiobjective# Realizar a busca por artigos contendo a palavra-chave "Multiobjective Portfolio"
results <- cr_works(query = "Multi period portfolio multiobjective", limit = 1000)$data # Max is 1000 searchesNow showing only selected columns for the table (dataframe) necessary:
results <- results |>
mutate(author_expand = map(author, ~as.character(.x))) |>
unnest(author_expand) |>
mutate(author_expand = gsub("c\\(\"|\"\\)", "", author_expand))
results <- results |>
mutate(link_expand = map(link, ~as.character(.x))) |>
unnest(link_expand)results <- results |>
select(
title,
author,
type,
url,
container.title,
short.container.title,
publisher,
doi,
published.print,
score,
reference.count,
is.referenced.by.count,
link,
reference,
abstract,
issn
) |>
mutate(
score = as.numeric(score),
published.print = coalesce(published.print, "1900-01"), # substitui NAs por "1900-01"
published.print = yearmonth( published.print )
) |>
filter(
year(published.print) >= 2020
) |>
distinct()Showing the results in a table:
Multi_period_portfolio_multiobjective <- results |>
arrange( desc(score), desc(is.referenced.by.count) ) |> distinct()
Multi_period_portfolio_multiobjectiveFinal_df <- bind_rows(
Multiobjective_Portfolio,
Portfolio_Selection_Multiobjective,
Multi_period_portfolio_multiobjective
) |>
arrange( desc(title), desc(score) ) |>
distinct()
glimpse(Final_df)Rows: 250
Columns: 16
$ title <chr> "Visualising data for portfolio decision-making…
$ author <list> [<tbl_df[1 x 5]>], [<tbl_df[1 x 4]>], [<tbl_df…
$ type <chr> "book-chapter", "proceedings-article", "journal…
$ url <chr> "http://dx.doi.org/10.4324/9780367853129-19", "…
$ container.title <chr> "Strategic Portfolio Management", "Proceedings …
$ short.container.title <chr> NA, NA, "Auton Agent Multi-Agent Syst", NA, "Co…
$ publisher <chr> "Routledge", "International Joint Conferences o…
$ doi <chr> "10.4324/9780367853129-19", "10.24963/ijcai.202…
$ published.print <mth> 2022 dez, 2020 jul, 2022 out, 2022 jan, 2020 ju…
$ score <dbl> 18.47202, 16.39417, 14.34200, 14.92646, 14.9536…
$ reference.count <chr> "0", "0", "61", "28", "32", "0", "0", "0", "0",…
$ is.referenced.by.count <chr> "0", "2", "1", "0", "7", "0", "0", "0", "0", "0…
$ link <list> <NULL>, <NULL>, [<tbl_df[3 x 4]>], [<tbl_df[1 …
$ reference <list> <NULL>, <NULL>, [<tbl_df[61 x 11]>], [<tbl_df[…
$ abstract <chr> NA, "<jats:p>Aiming to improve the performance …
$ issn <chr> NA, NA, "1387-2532,1573-7454", "0302-9743,1611-…
Final_df_unique <- Final_df %>%
distinct(title, doi, .keep_all = TRUE)
glimpse(Final_df_unique)Rows: 225
Columns: 16
$ title <chr> "Visualising data for portfolio decision-making…
$ author <list> [<tbl_df[1 x 5]>], [<tbl_df[1 x 4]>], [<tbl_df…
$ type <chr> "book-chapter", "proceedings-article", "journal…
$ url <chr> "http://dx.doi.org/10.4324/9780367853129-19", "…
$ container.title <chr> "Strategic Portfolio Management", "Proceedings …
$ short.container.title <chr> NA, NA, "Auton Agent Multi-Agent Syst", NA, "Co…
$ publisher <chr> "Routledge", "International Joint Conferences o…
$ doi <chr> "10.4324/9780367853129-19", "10.24963/ijcai.202…
$ published.print <mth> 2022 dez, 2020 jul, 2022 out, 2022 jan, 2020 ju…
$ score <dbl> 18.47202, 16.39417, 14.34200, 14.92646, 14.9536…
$ reference.count <chr> "0", "0", "61", "28", "32", "0", "0", "0", "0",…
$ is.referenced.by.count <chr> "0", "2", "1", "0", "7", "0", "0", "0", "0", "0…
$ link <list> <NULL>, <NULL>, [<tbl_df[3 x 4]>], [<tbl_df[1 …
$ reference <list> <NULL>, <NULL>, [<tbl_df[61 x 11]>], [<tbl_df[…
$ abstract <chr> NA, "<jats:p>Aiming to improve the performance …
$ issn <chr> NA, NA, "1387-2532,1573-7454", "0302-9743,1611-…
Final_df_uniqueBy expanding the author names columns:
# Unnest the author column
Final_df_unique_expanded <- Final_df_unique %>%
unnest(author) %>%
select(title, given, family)
# Rename the author name columns
Final_df_unique_expanded <- Final_df_unique_expanded %>%
rename(Author_First_Name = given, Author_Last_Name = family)
# Print the expanded data frame
print(Final_df_unique_expanded)# A tibble: 514 × 3
title Author_First_Name Author_Last_Name
<chr> <chr> <chr>
1 Visualising data for portfolio decision-m… Catherine Killen
2 Vector Autoregressive Weighting Reversion… Xia Cai
3 Towards explainable interactive multiobje… Giovanni Misitano
4 Towards explainable interactive multiobje… Bekir Afsar
5 Towards explainable interactive multiobje… Giomara Lárraga
6 Towards explainable interactive multiobje… Kaisa Miettinen
7 Towards Efficient Multiobjective Hyperpar… Zefeng Chen
8 Towards Efficient Multiobjective Hyperpar… Yuren Zhou
9 Towards Efficient Multiobjective Hyperpar… Zhengxin Huang
10 Towards Efficient Multiobjective Hyperpar… Xiaoyun Xia
# ℹ 504 more rows
Now inserting the authors name in a new df
authors_df <- Final_df_unique_expanded |>
group_by(title) %>%
summarise(Author_Names = paste(Author_First_Name, Author_Last_Name, collapse = "; ")) %>%
ungroup()
print(authors_df)# A tibble: 201 × 2
title Author_Names
<chr> <chr>
1 $$l_1$$-Regularization for multi-period portfolio selection Stefania Co…
2 2 Energietechnische Portfolio-Analyse Eberhard Hi…
3 A Credibilistic Multiobjective Multiperiod Efficient Portfolio … Arun Kumar;…
4 A Fast Converging Evolutionary Algorithm for Constrained Multio… Yi Chen; He…
5 A Markov-switching COGARCH approach to cryptocurrency portfolio… Jules Cleme…
6 A Multi-period Fuzzy Portfolio Optimization Model with Short Se… Xing-Yu Yan…
7 A Multi-view Multiobjective Partitioning Technique for Search R… Diksha Bans…
8 A Multiobjective-Based Group Trading Strategy Portfolio Optimiz… Chun-Hao Ch…
9 A Multiperiod Multiobjective Portfolio Selection Model With Fuz… Chen Li; Yu…
10 A Nash bargaining solution for a multi period competitive portf… Behnaz Pour…
# ℹ 191 more rows
Author(s)
df_author <- Final_df_unique |>
select(title,
author) |>
unnest(cols = author)
glimpse(df_author)Rows: 514
Columns: 11
$ title <chr> "Visualising data for portfolio decision-making", …
$ ORCID <chr> "http://orcid.org/0000-0002-2370-7856", NA, "http:…
$ authenticated.orcid <lgl> FALSE, NA, FALSE, NA, NA, NA, NA, NA, NA, NA, NA, …
$ given <chr> "Catherine", "Xia", "Giovanni", "Bekir", "Giomara"…
$ family <chr> "Killen", "Cai", "Misitano", "Afsar", "Lárraga", "…
$ sequence <chr> "first", "first", "first", "additional", "addition…
$ affiliation.name <chr> NA, "Fudan University", NA, NA, NA, NA, NA, NA, NA…
$ suffix <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ affiliation1.name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ affiliation2.name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
print(df_author)# A tibble: 514 × 11
title ORCID authenticated.orcid given family sequence affiliation.name suffix
<chr> <chr> <lgl> <chr> <chr> <chr> <chr> <chr>
1 Visu… http… FALSE Cath… Killen first <NA> <NA>
2 Vect… <NA> NA Xia Cai first Fudan University <NA>
3 Towa… http… FALSE Giov… Misit… first <NA> <NA>
4 Towa… <NA> NA Bekir Afsar additio… <NA> <NA>
5 Towa… <NA> NA Giom… Lárra… additio… <NA> <NA>
6 Towa… <NA> NA Kaisa Miett… additio… <NA> <NA>
7 Towa… <NA> NA Zefe… Chen first <NA> <NA>
8 Towa… <NA> NA Yuren Zhou additio… <NA> <NA>
9 Towa… <NA> NA Zhen… Huang additio… <NA> <NA>
10 Towa… <NA> NA Xiao… Xia additio… <NA> <NA>
# ℹ 504 more rows
# ℹ 3 more variables: name <chr>, affiliation1.name <chr>,
# affiliation2.name <chr>
Links
df_link <- Final_df |>
select(
title,
link
) |>
unnest(
cols = link
)
glimpse(df_link)References
df_references <- Final_df |>
select(
title,
reference
) |>
unnest(
cols = reference
)
glimpse(df_references)citation(package = "rcrossref")
To cite package 'rcrossref' in publications use:
Chamberlain S, Zhu H, Jahn N, Boettiger C, Ram K (2022). _rcrossref:
Client for Various 'CrossRef' 'APIs'_. R package version 1.2.0,
<https://CRAN.R-project.org/package=rcrossref>.
A BibTeX entry for LaTeX users is
@Manual{,
title = {rcrossref: Client for Various 'CrossRef' 'APIs'},
author = {Scott Chamberlain and Hao Zhu and Najko Jahn and Carl Boettiger and Karthik Ram},
year = {2022},
note = {R package version 1.2.0},
url = {https://CRAN.R-project.org/package=rcrossref},
}
citation(package = "scholar")
To cite scholar in publications, please use:
J. Keirstead (2016) scholar: Analyse citation data from Google
Scholar. R package version 0.1.5.
https://github.com/jkeirstead/scholar.
A BibTeX entry for LaTeX users is
@Manual{,
author = {James Keirstead},
title = {scholar: analyse citation data from Google Scholar},
year = {2016},
note = {R package version 0.1.5},
url = {https://github.com/jkeirstead/scholar},
}